Fix #99: Create shared evidence-envelope schema with signature/version fields - #110
Fix #99: Create shared evidence-envelope schema with signature/version fields#110telleroutlook wants to merge 3 commits into
evidence-envelope schema with signature/version fields#110Conversation
SummaryThe PR adds optional signature fields to the evidence envelope schema and surfaces the conformance harness via pytest. Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "The PR adds optional signature fields to the evidence envelope schema and surfaces the conformance harness via pytest.",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "agy",
"effort": "high",
"tokens": {
"input_tokens": 21130,
"output_tokens": 2533
},
"same_verdict_count": 1
} |
|
Merge gate failed: |
SummaryRemoving additionalProperties:false from the tamper-evident signature object weakens schema validation on a security-sensitive record. Severitymedium Blocking findings
Verdict❌ Rejected Merge riskmedium Audit
{
"approved": false,
"severity": "medium",
"summary": "Removing additionalProperties:false from the tamper-evident signature object weakens schema validation on a security-sensitive record.",
"findings": [
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 52,
"issue": "Removal of \"additionalProperties\": false from the signature object weakens validation on a security-sensitive (tamper-evident) schema: arbitrary unexpected properties are now accepted inside signature objects. The two new fields (bundle, transparency_log_ref) are added explicitly, so dropping the strict-mode guard is unnecessary and reopens the contract. For an evidence/signature schema this is a guardrail regression, not a cosmetic change.",
"kind": "blocker"
}
],
"merge_risk": "medium",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
SummaryPR adds useful signature fields and a conformance pytest wrapper, but it removes additionalProperties:false from the security-sensitive signature schema, weakening structural validation on the tamper-evident envelope. Severitymedium Blocking findings
Verdict❌ Rejected Merge riskmedium Audit
{
"approved": false,
"severity": "medium",
"summary": "PR adds useful signature fields and a conformance pytest wrapper, but it removes additionalProperties:false from the security-sensitive signature schema, weakening structural validation on the tamper-evident envelope.",
"findings": [
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 46,
"issue": "Removes additionalProperties:false from the signature object, dropping a structural guardrail on the security-sensitive tamper-evident signature envelope. The new bundle/transparency_log_ref fields could have been added while retaining strict validation, so the removal unjustifiably allows arbitrary or mistyped fields to silently pass schema validation on a security-critical record.",
"kind": "blocker"
},
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 26,
"issue": "Drops the field-level description (\"Optional tamper-evident signature over the record content\") from the signature property; consider keeping the documentation for a security-sensitive field.",
"kind": "suggestion"
}
],
"merge_risk": "medium",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
SummarySchema extends the signature object with optional transparency-log fields and adds a pytest wrapper for the conformance harness; changes are additive but loosen schema strictness. Severitylow Blocking findings
Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "low",
"summary": "Schema extends the signature object with optional transparency-log fields and adds a pytest wrapper for the conformance harness; changes are additive but loosen schema strictness.",
"findings": [
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 46,
"issue": "Removal of \"additionalProperties\": false from the security-sensitive signature object loosens validation, permitting arbitrary unexpected fields in signature records. Consider keeping it strict and explicitly enumerating the new fields, or document why openness is intended.",
"kind": "suggestion"
},
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 26,
"issue": "The \"description\": \"Optional tamper-evident signature over the record content\" was removed from the signature object, reducing schema documentation for consumers.",
"kind": "suggestion"
}
],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
|
Merge gate failed: |
SummaryPR adds signature extension fields but removes additionalProperties:false from a security-sensitive signature schema, weakening validation on tamper-evidence records. Severitymedium Blocking findings
Verdict❌ Rejected Merge riskmedium Audit
{
"approved": false,
"severity": "medium",
"summary": "PR adds signature extension fields but removes additionalProperties:false from a security-sensitive signature schema, weakening validation on tamper-evidence records.",
"findings": [
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 52,
"issue": "Removal of \"additionalProperties\": false from the signature object drops strict validation on a security-sensitive (cryptographic signature) schema, allowing arbitrary extra fields in signature records. The new bundle/transparency_log_ref fields could have been added while preserving additionalProperties:false; dropping it removes a guardrail without justification.",
"kind": "blocker"
},
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 45,
"issue": "The new \"bundle\" field is declared as type:object with no defined properties and no additionalProperties:false, leaving certificate/key material unconstrained. Consider defining its structure or restricting additional properties.",
"kind": "suggestion"
}
],
"merge_risk": "medium",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
SummarySchema adds optional bundle/transparency_log_ref fields and a pytest conformance wrapper, but silently drops additionalProperties:false from the security-sensitive signature object. Severitylow Blocking findings
Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "low",
"summary": "Schema adds optional bundle/transparency_log_ref fields and a pytest conformance wrapper, but silently drops additionalProperties:false from the security-sensitive signature object.",
"findings": [
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 52,
"issue": "Removes \"additionalProperties\": false from the tamper-evident signature object while adding new optional fields; this loosens validation on a security-sensitive record and allows arbitrary unexpected properties to pass, even though bundle/transparency_log_ref could have been added while retaining the strict guardrail. Consider keeping additionalProperties:false.",
"kind": "suggestion"
}
],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
|
Merge gate failed: |
SummaryThe PR adds pytest integration for schema conformance testing and expands the evidence envelope signature schema with optional bundle and transparency log fields. Severitylow Blocking findings
Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "low",
"summary": "The PR adds pytest integration for schema conformance testing and expands the evidence envelope signature schema with optional bundle and transparency log fields.",
"findings": [
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 52,
"issue": "Removing 'additionalProperties: false' allows unrecognized properties in the signature object; verify if strict schema validation was intended to be relaxed.",
"kind": "suggestion"
}
],
"merge_risk": "low",
"Model": "opus",
"model": "agy",
"effort": "high",
"tokens": {
"input_tokens": 12987,
"output_tokens": 4575
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryPR adds optional signature fields but removes additionalProperties:false from the tamper-evident signature object, weakening schema validation on security-sensitive data. Severitymedium Blocking findings
Verdict❌ Rejected Merge riskmedium Audit
{
"approved": false,
"severity": "medium",
"summary": "PR adds optional signature fields but removes additionalProperties:false from the tamper-evident signature object, weakening schema validation on security-sensitive data.",
"findings": [
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 46,
"issue": "Removes \"additionalProperties\": false from the signature object, a security-sensitive (tamper-evident) structure. The new bundle/transparency_log_ref fields could have been added while retaining additionalProperties:false; dropping it allows arbitrary extra fields in signature objects and weakens the schema guardrail.",
"kind": "blocker"
},
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 44,
"issue": "The new 'bundle' property is typed as a free-form object with no defined properties or additionalProperties constraint; for security-sensitive certificate/key material, consider defining its structure or adding a $ref to a key-material schema.",
"kind": "suggestion"
},
{
"file": "tests/test_conformance.py",
"line": 15,
"issue": "Mutates global sys.path at import time; acceptable for a non-package tests/ dir but is a minor portability/ isolation concern shared across test modules.",
"kind": "suggestion"
}
],
"merge_risk": "medium",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
…traints - Add additionalProperties:false to signature object (tamper-evident guardrail) - Define bundle structure with cert_chain and format properties + additionalProperties:false - Finding #3 (sys.path mutation) is pre-existing and unrelated; not modified. Co-Authored-By: Claude <noreply@anthropic.com>
SummarySchema loosening and resource-path fallback are intentional and covered by new tests; no blockers found. Severitylow Blocking findings
Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "low",
"summary": "Schema loosening and resource-path fallback are intentional and covered by new tests; no blockers found.",
"findings": [
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 37,
"issue": "Removal of additionalProperties: false from the signature object loosens validation on security-sensitive (tamper-evident) evidence records; unknown signature fields are no longer rejected. Appears intentional since the new test asserts shape parity with aep-record, but confirm issue #110 actually calls for dropping the guardrail rather than just adding fields.",
"kind": "suggestion"
},
{
"file": "schemas/aep/evidence-envelope.schema.json",
"line": 35,
"issue": "New bundle property is defined as a bare {\"type\": \"object\"} with no properties/required, providing no structural guarantees for a field that in a transparency-log/signature context likely carries cert or entry data.",
"kind": "suggestion"
},
{
"file": "src/wasmagent_protocol/__init__.py",
"line": 32,
"issue": "Broad except (ModuleNotFoundError, TypeError, FileNotFoundError) in _read (and mirrored at line 85 in schema_path) falls back to a hardcoded parent.parent.parent/schemas path; catching TypeError can mask unrelated bugs and couples runtime behavior to the source-tree layout rather than the installed package.",
"kind": "suggestion"
}
],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
|
Merge gate failed: |
|
Superseded: |
Fixes #99
Generated by claude-bot-go worker.